<?php

namespace adminmatrix\server\command\app;

use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\console\Table;
use Symfony\Component\Console\Helper\ProgressBar;

class AppList extends Command
{

    protected function configure()
    {
        $this->setName('app:list')
            ->setDescription('查看当前应用列表');
    }

    protected function execute(Input $input, Output $output) : void
    {
        $table  = new Table;

        # 设置表头
        $table->setHeader(['应用名' , '目录位置']);


        $progressBar = new ProgressBar($output, 100 , 10);


        $data = $this->getDirectories(App()->getAppPath());

        $tables = [];
        foreach ($data as $dir) {
            $tables[] = [
                basename($dir) ,
                str_replace(App()->getRootPath(), '', $dir)
            ];
        }
        # 添加行
        $table->setRows($tables);

        echo $table->render();
    }


    private function getDirectories($appPath)  : array
    {
        // 检查目录是否存在
        if (!is_dir($appPath)) {
            return [];
        }

        // 使用 glob 获取所有子目录（GLOB_ONLYDIR表示仅返回目录）
        $directories = glob($appPath . '*', GLOB_ONLYDIR);

        // 如果 glob 失败返回空数组，否则返回目录列表
        return $directories === false ? [] : $directories;
    }

}